/* Updates vcpu->arch.cr3 after the guest has changed CR3.
* Paravirtual guests should set v->arch.guest_table (and guest_table_user,
* if appropriate).
- * HVM guests should also make sure hvm_get_guest_cntl_reg(v, 3) works,
- * and read vcpu->arch.hvm_vcpu.hw_cr3 afterwards.
+ * HVM guests should also make sure hvm_get_guest_cntl_reg(v, 3) works;
+ * this function will call hvm_update_guest_cr3() to tell them where the
+ * shadow tables are.
* If do_locking != 0, assume we are being called from outside the
* shadow code, and must take and release the shadow lock; otherwise
- * that is the caller's respnsibility.
+ * that is the caller's responsibility.
*/
{
struct domain *d = v->domain;
return v->arch.shadow.mode->gva_to_gfn(v, va);
}
-/* Update all the things that are derived from the guest's CR3.
- * Called when the guest changes CR3; the caller can then use
- * v->arch.cr3 as the value to load into the host CR3 to schedule this vcpu
- * and v->arch.hvm_vcpu.hw_cr3 as the value to put in the vmcb/vmcs when
- * entering the HVM guest. */
+/* Update all the things that are derived from the guest's CR3.
+ * Called when the guest changes CR3; the caller can then use v->arch.cr3
+ * as the value to load into the host CR3 to schedule this vcpu */
static inline void shadow_update_cr3(struct vcpu *v)
{
v->arch.shadow.mode->update_cr3(v, 1);